package main

import "fmt"

// 数值类型-显式转换
func main() {

	//需要显式转换

	var i int32 = 100
	var j float32 = float32(i)
	fmt.Printf("i type=%T ,j type=%T\n", i, j) //转换前后j的类型不变 i type=int32 ,j type=float32
	fmt.Printf("i=%v j=%v\n", i, j)            //i=100 j=100

	//大的数据范围转小的数据范围，可能发生精度丢失
	var a1 int64 = 1000
	var a2 int8 = int8(a1)
	fmt.Printf("a1 type=%T ,a2 type=%T\n", a1, a2) //a1 type=int64 ,a2 type=int8
	fmt.Printf("a1=%d a2=%d\n", a1, a2)            //a1=1000 a2=-24

	var f1 float32 = 3.14
	var f2 int = int(f1)
	fmt.Printf("f1 type=%T,f2 type=%T\n", f1, f2) //f1 type=float32,f2 type=int
	fmt.Printf("f1=%f f2=%d\n", f1, f2)           //f1=3.140000 f2=3
}
